﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using Entidades;

namespace AccesoBD
{
    public class ModalidadesAtencion
    {
        public static void insertar(ModalidadAtencion m, out int codM)
        {
            codM = 0;
            if (m.CodModalidad == 0)
            {
                SqlConnection con = new SqlConnection();
                con = DB.Conectar();
                SqlTransaction tran = null;
                try
                {

                    string comando = "Insert into Modalidad(duracionAtencion,fechaVigenciaDesde,fechaVigenciaHasta,tipo_Modalidad) values(@duracionAtencion, @duracionAtencion, @fechaVigenciaDesde, @fechaVigenciaHasta, @tipo_modalidad)";
                    List<SqlParameter> Listp = new List<SqlParameter>();
                    Listp.Add(new SqlParameter("@duracionAtencion", m.DuracionAtencion));
                    Listp.Add(new SqlParameter("@fechaVigenciaDesde", m.FechaVigenciaDesde));
                    Listp.Add(new SqlParameter("@fechaVigenciaHasta", m.FechaVigenciaHasta));
                    Listp.Add(new SqlParameter("@tipo_modalidad", m.CodTipoModalidad));

                    int filas = DB.EjecutarCommand(comando, Listp, con, tran);
                    if (filas > 0)
                    {
                        m.CodModalidad = ObtenerUltimoID(con, tran);
                        codM = m.CodModalidad;
                        tran.Commit();
                    }
                }
                catch (Exception)
                {
                    if (tran != null)
                    {
                        tran.Rollback();
                    }
                    throw new Exception("No se pudo registrar la Modalidad");
                }
                finally
                {
                    con.Close();
                }
            }
        }

        public static int ObtenerUltimoID(SqlConnection con, SqlTransaction trans)
        {
            int id = -1;
            try
            {
                string comando = "select @@identity FROM Modalidad";
                List<SqlParameter> lstParametros = new List<SqlParameter>();
                id = int.Parse(DB.EjecutarScalar(comando, lstParametros, con, trans));
            }
            catch (SqlException ex)
            {
                //Con throw la información de la pila es mas profunda de donde se genero el error
                //En la capa de Presentación se Captura como Exception
                throw new Exception("Hubo un problema al obtener el ultimo ID.", ex);
            }
            catch (Exception ex)
            {
                throw new Exception("Hubo un problema al obtener el ultimo ID.", ex);
            }
            return id;
        }
    }
}
